"""
双端队列（deque，全名double-ended queue）是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出，其限定插入和删除操作在表的两端进行。
"""

class Deque:
    def __init__(self):
        self.items = []

    def is_empty(self):
        return not bool(self.items)

    def add_front(self, data):
        self.items.append(data)

    def add_rear(self, data):
        self.items.insert(0, data)

    def remove_front(self):
        return self.items.pop()

    def remove_rear(self):
        return self.items.pop(0)

    def size(self):
        return len(self.items)

if __name__ == '__main__':
    # 创建一个Deque对象
    dq = Deque()

    # 检查Deque是否为空
    print(dq.is_empty())  # 输出：True

    # 向Deque的前端添加元素
    dq.add_front('Apple')
    dq.add_front('Banana')

    # 向Deque的后端添加元素
    dq.add_rear('Cherry')
    dq.add_rear('Date')

    # 打印Deque的大小
    print(dq.size())  # 输出：4

    # 从Deque的前端移除元素并打印
    print(dq.remove_front())  # 输出：Banana

    # 从Deque的后端移除元素并打印
    print(dq.remove_rear())  # 输出：Date

    # 再次打印Deque的大小
    print(dq.size())  # 输出：2
